#include <d3dx9.h>
#include <d3d9.h>

////////////////////////////////
// Stubs for rendering classes
////////////////////////////////

struct GeometryPacket
{
	void* Vertices;
	unsigned int* Indices;

	// for sorting
	D3DXVECTOR3 SphereCenter;
	float SphereRadius;

	unsigned int VertexStride;
	unsigned int VertexCount;
	unsigned int IndexCount;
};

struct InstanceAttributes
{
	// AnimationHandler* Animation;
	D3DXMATRIX LocalMatrix;
	D3DCOLOR InstanceColor;
	unsigned int LOD;
};

struct GeometryInstance
{
	GeometryPacket tPacket;
	InstanceAttributes tAttributes;
};

class GeometryBatch
{
private:
	GeometryInstance mInstances[];
};

class MaterialContext
{
private:
	// Texture* mTextures;
	// Shader* mVertShader;
	// Shader* mFragShader;
	GeometryBatch mGeometryBatch;
};

class RenderContext
{
private:
	ID3DXEffect* mEffect;
	MaterialContext** mMaterials;
};